//https://leetcode.cn/problems/reverse-string-ii/description/
//反转字符串二
//给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。

//如果剩余字符少于 k 个，则将剩余字符全部反转。
//如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。

class Solution {
public:
    void myReverse(string& s, int left, int right)
    {
        while(left < right)
        {
            swap(s[left++], s[right--]);
        }
    }

    string reverseStr(string s, int k) {
        for(int pos = 0; pos < s.size(); pos += 2 * k)
        {
            int end = pos + k > s.size() ? s.size() - 1 : pos + k - 1;
            myReverse(s, pos, end);
        }
        return s;
    }
};